#ifndef _MB_HOLDING_REGISTERS_H_
#define _MB_HOLDING_REGISTERS_H_

#include "stdint.h"
#include "mb_pdu.h"
#include "mb_functioncode.h"
#include "mb_slave.h"

/**
 * @brief 03 读保持寄存器 响应
 * @param hslave        从站指针
 * @param pSrc          需要解析的数据指针
 * @ret   MB_OK 成功 其它 出错
*/
MB_StatusTypeDef MB_HOLDREG_Read_Response(
    MB_SLAVE_HandleTypeDef *hslave, 
    uint8_t *pSrc, 
    uint8_t *pDst, 
    uint16_t *pDstlen);

/**
 * @brief 06 写单个寄存器功能码 响应
 * @param hslave        从站指针
 * @param pSrc          需要解析的数据指针
 * @ret   MB_OK 成功 其它 出错
*/
MB_StatusTypeDef MB_HOLDREG_WriteSingle_Response(
    MB_SLAVE_HandleTypeDef *hslave,
    uint8_t *pReqBuf,
    uint8_t *pRspBuf,
    uint16_t *pRspLen);

/**
 * @brief 16(0x10) 写多个寄存器功能码 响应
 * @param hslave        从站指针
 * @param pSrc          需要解析的数据指针
 * @ret   MB_OK 成功 其它 出错
*/
MB_StatusTypeDef MB_HOLDREG_WriteMultiple_Response(
    MB_SLAVE_HandleTypeDef *hslave,
    uint8_t *pReqBuf,
    uint8_t *pRspBuf,
    uint16_t *pRspLen);

/**
 * @brief 23(0x17)      读写多个寄存器功能码 响应
 * @param hslave        从站指针
 * @param pSrc          需要解析的数据指针
 * @ret   MB_OK 成功 其它 出错
*/
MB_StatusTypeDef MB_HOLDREG_ReadWriteMultiple_Response(
    MB_SLAVE_HandleTypeDef *hslave,
    uint8_t *pReqbuf,
    uint8_t *pRspbuf,
    uint16_t *pRspbuflen);
#endif
